Уровни изоляции | Isolation levels
Уровни изоляции
Уровень | Чтение и блокировка | Аномалия | Описание аномалии |
Потерянные изменения Lost Update | Последовательное обновление строки таким образом, что последнее изменение полностью не учитывает результаты предыдущего и перезаписывает их. | ||
READ UNCOMMITTED | Грязное чтение Dirty read | Считывания из БД данных, которые являются промежуточными или отмененными в будущем. | |
READ COMMITTED | Не удерживает блокировку строк. | Неповторяющееся чтение Non-repeatable read | В рамках транзакции при повторном чтении данных, отобразятся все изменения, выполненные и закомиченные другими транзакциями |
REPEATABLE READ | Удерживает share блокировку строк. | Фантомное чтение Phantom reads | В рамках транзакции при повторном чтении данных, может меняться кол-во строк (Связано с добавлением новых строк или изменение существующих таким образом, что они начали попадать в выборку т.к. заблокированы только те строки, которые были прочитаны, а вставка новой строки (подпадающей под условие выборки) не запрещена) (но обновить или удалить параллельно строки нельзя из-за share блокировки). |
Аномалия сериализации | В PostgreSQL на данном уровне изоляции не возникает аномалии Phantom reads. Но может возникнуть данная аномалия. При использовании теста из документации PostgreSQL на текущем уровне изоляции, аномалия также проявилась в MSSQL. | ||
SERIALIZABLE | Предикатные блокировки. | - | Выполнение происходит так, словно транзакции выполняются последовательно одна за другой в некотором порядке (при этом не влияя друг на друга). Полное отсутствие перечисленных выше аномалий. |
Подходы к реализации изоляции.
Реализация | |
Изоляции на основе блокировок | |
Протокол изоляции на основе снимков Snapshot Isolation | MVCC |
Внутренние ссылки:
Дочерние страницы:
Обратные ссылки:
Уровни изоляции и несогласованность данных
http://www.t-sql.ru/post/nolock.aspx
PostgreSQL: Documentation: 15: 13.2. Transaction Isolation
https://www.postgresql.org/docs/current/transaction-iso.html
К чему может привести ослабление уровня изоляции транзакций в базах данных
https://habr.com/ru/company/otus/blog/501294/
ept/hermitage
Hermitage: Testing transaction isolation levels
https://github.com/ept/hermitage
Consistency Models
https://jepsen.io/consistency